using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;

namespace QldtSdh.DAL.Models.Mapping
{
    public class DeTaiMap : EntityTypeConfiguration<DeTai>
    {
        public DeTaiMap()
        {
            // Khoá chính
            this.HasKey(t => t.MaDeTai);

            // Các cột
            this.Property(t => t.MaDeTai)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.TenDeTai)
                .IsRequired()
                .HasMaxLength(250);

            this.Property(t => t.MaLoaiDeTai)
                .IsRequired()
                .HasMaxLength(50);

            this.Property(t => t.NguoiThucHien)
                .IsRequired()
                .HasMaxLength(250);

            this.Property(t => t.NamThucHien)
                .IsRequired()
                .HasMaxLength(50);

            // Ánh xạ Property của POCO vào Column của Table
            this.ToTable("DeTai");
            this.Property(t => t.MaDeTai).HasColumnName("MaDeTai");
            this.Property(t => t.MaLoaiDeTai).HasColumnName("MaLoaiDeTai");
            this.Property(t => t.TenDeTai).HasColumnName("TenDeTai");
            this.Property(t => t.NamThucHien).HasColumnName("NamThucHien");
            this.Property(t => t.NamBaoVe).HasColumnName("NamBaoVe");
            this.Property(t => t.NguoiThucHien).HasColumnName("NguoiThucHien");
            this.Property(t => t.GhiChu).HasColumnName("GhiChu");

            // Các quan hệ
            this.HasRequired(t => t.LoaiDeTai)
                .WithMany(t => t.ListDeTai)
                .HasForeignKey(t => t.MaLoaiDeTai);
        }
    }
}
